package com.example.springlean.mapper;

import com.example.springlean.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * EmpMapper接口用于定义与Employee实体相关的数据库操作
 * 它使用MyBatis的@Mapper注解来标识这是一个MyBatis的Mapper接口
 */
@Mapper
public interface EmpMapper {

    /**
     * 计算员工总数
     *
     * @return 员工总数
     */
    @Select("select count(*) from emp e left join dept d on e.dept_id = d.id ")
    public Long count();

    /**
     * 分页查询员工列表，同时获取部门名称
     * 通过连接emp和dept两个表来获取员工及其对应的部门名称
     *
     * @param start 分页查询的起始位置
     * @param pageSize 每页显示的记录数
     * @return 员工列表，包含部门名称
     */
    @Select("select e.*, d.name deptName from emp as e left join dept as d on e.dept_id = d.id limit #{start}, #{pageSize}")
    public List<Emp> list(Integer start , Integer pageSize);

}
